JAVA: Summary / Variables 102
3
3
.
.
4
4
V
V
a
a
r
r
i
i
a
a
b
b
l
l
e
e
s
s
I
I
n
n
f
f
o
o
Variables
final String name = "John"; //Constant
String name = "John"; //Variable
Optional<String> name = Optional.of("John"); //Optional Generic Class java.util.Optional<T>
O
O
p
p
t
t
i
i
o
o
n
n
a
a
l
l
M
M
e
e
t
t
h
h
o
o
d
d
s
s
Basic Methods
//DECLARE OTPIONAL.
Optional<String> string = Optional.of ("John"); //Create Optional with String Object
Optional<String> canBeNull = Optional.ofNullable("John"); //Create Optional with or without Object
Optional<String> nullOptional = Optional.ofNullable(null); //Create Optional with or without Object
Optional<String> emptyString = Optional.empty (); //Create Optional without Object (empty)
//RETURN OBJECT FROM OPTIONAL OR ...
String name = optionalName.get(); //Throw Exception
String name = optionalName.orElse ("unknown"); //Return default value
String name = optionalName.orElseGet (() -> { return 0; }); //Return value from handler
String name = optionalName.orElseThrow(() -> { return new Exception("No value"); }); //Throw custom Exception
//CONDITIONALS.
boolean hasName = optionalName.isPresent(); //Return TRUE or FALSE
optionalName.ifPresent( (value) -> { System.out.println("Value = " + value); }); //Execute void Hadler
//DISPLAY OPTIONAL.
System.out.println(optionalName); //Optional.empty
System.out.println(optionalName); //Optional[John]
System.out.println(optionalAge ); //Optional[10]
filter() (values that don't satisfy criteria are turned to null)
//Return Optional if Handler returns TRUE.
//Otherwise return empty Optional.
Optional<Integer> optionalRet = optionalName.filter( value -> {
if (value == "John") { return true; } //Optional[John]
else { return false; } //Optional.empty
});
map() (maps value to another value)
//Returns Optional with a Value returned by handler: Optional[Optional[Hello John]]
Optional<Object> optionalRet = optionalName.map( value -> { //Optional[Optional[Hello John]]
return Optional.of("Hello " + value); //Optional[Hello John]
});
flatMap() (returns flattened Optional)
//Returns flattened Optional: Optional<String> instead Optional<Optional<String>>
//If handler returns Optional, its value is first taken out before returnig final Optional.
Optional<String> optionalRet = optionalName.flatMap( value -> { //Optional[Hello John]
return Optional.of("Hello " + value); //Optional[Hello John]
});